Normalmente, si vas a dibujar pocos puntos en un scatter plot lo normal es usar scatter
en matplotlib. Sin embargo, si tienes que dibujar una cantidad considerable de puntos, el rendimiento puede ser un factor importante. Como alternativa se puede usar plot
en lugar de scatter
.
Veamos un ejemplo muy sencillo de esto y el rendimiento obtenido. vamos a dibujar 100.000 puntos aleatorios y ver los tiempos que obtenemos usando scatter
y plot
.
Primero importamos las librerías a usar:
In [1]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
Creamos 100.000 puntos aleatorios:
In [2]:
x = np.random.rand(100000)
y = np.random.rand(100000)
Veamos lo que tarda un scatter plot
In [3]:
%%timeit
plt.scatter(x, y)
Y ahora lo mismo pero con un plot normal
In [4]:
%%timeit
plt.plot(x, y, 'bo')
La diferencia entre ambas opciones es:
$$ Rendimiento = \frac{scatter}{plot} = \frac{598}{9.09} \approx 65 $$Motivación de esta entrada: hoy en el trabajo he tenido que escribir unos cuantos paneles de figuras 8x8, es decir, 64 figuras en cada panel, con más de 50.000 datos en cada figura y me ha parecido interesante compartir este pequeño truco que tengo por ahí guardado para estos casos :-)